<?PHP
/**
 * OpenStation
 *
 * @NO CACHE
 *
 * @Application : OpenCli.php
 * @Encode : 65001 Unicode ( UTF-8 NO BOM )
 * @Description : Only Cli
 * @Author : HK <hkyyang@gmail.com>
 */
if( ! IS_CLI ) {
    exit;
}

// 记录内存使用和运行时间
memory_count( 'OPENSTATION' );
runtime_count( 'OPENSTATION' );

// 载入必要类库
import( 'Common.function', '.min.php' );
import( 'Lib.Core.Cache' );
import( 'Lib.Cli.Cli' );

// 载入系统配置
Cache :: load( 'OPENSTATION', OS_PATH . 'Config' . DS . 'Config.php' );
// 载入项目目录
Cache :: set( 'APP_PATH', $Paths );
unset( $Paths );


// 载入语言包
Cache :: lang( include OS_PATH . 'Lang' . DS . Cache :: get( 'OPENSTATION.OTHER.LANGUAGE' ) . '.php' );

// 系统变量设置
Cache :: set( 'SERVER.ACTION_SHORT', ucfirst( strtolower( string_after_remove( basename( APP_FILE ), '.php' ) ) ) );
Cache :: set( 'SERVER.ACTION_FILE_NAME', Cache :: get( 'APP_PATH.CLI' ) . Cache :: get( 'SERVER.ACTION_SHORT' ) . 'Cli.class.php' );
Cache :: set( 'SERVER.CLASS_NAME', Cache :: get( 'SERVER.ACTION_SHORT' ) . 'Cli' );
Cache :: set( 'SERVER.ENTRANCE', basename( APP_FILE ) );
Cache :: copy( 'APP_PATH.TEMPLATE', 'APP_PATH.APP_TEMPLATE' );

// 项目目录检查新建，以配置文件存在判断，避免每次检查
if( ! is_file( Cache :: get( 'APP_PATH.CONFIG' ) . 'Config.php' ) ) {
    array_walk( Cache :: get( 'APP_PATH' ), 'mkdirs' );
    // 生成默认配置文件
    copy( OS_PATH . 'Template/InitialDefault/APP_CONFIG', Cache :: get( 'APP_PATH.CONFIG' ) . 'Config.php' );
}

// 载入项目配置
Cache :: load( '@', Cache :: get( 'APP_PATH.CONFIG' ) . 'Config.php' );

if( function_exists( 'gzdeflate' ) && function_exists( 'gzinflate' ) ) {
    Cache :: set( 'OPENSTATION.COMPRESSION', array(
        'ENCODE' => 'gzdeflate',
        'DECODE' => 'gzinflate'
    ) );
} else if( function_exists( 'gzcompress' ) && function_exists( 'gzuncompress' ) ) {
    Cache :: set( 'OPENSTATION.COMPRESSION', array(
        'ENCODE' => 'gzcompress',
        'DECODE' => 'gzuncompress'
    ) );
}

// 检查默认Cli Class并生成
if( ! is_file( Cache :: get( 'SERVER.ACTION_FILE_NAME' ) ) ) {
    file_put_contents( Cache :: get( 'SERVER.ACTION_FILE_NAME' ), str_replace(
        '%CLASS%',
        Cache :: get( 'SERVER.ACTION_SHORT' ),
        file_get_contents( OS_PATH . 'Template/InitialDefault/APP_CLI' )
    ) );
}

// 载入行为
import( Cache :: get( 'SERVER.ACTION_FILE_NAME' ) );
// 执行构造
Cache :: get_instance( 'SERVER.CLASS_NAME' );
exit;
?>